package model

import (
	"gorm.io/gorm"
	"time"
)

type DataBunker struct {
	ID             int64  `json:"id" gorm:"id"`
	FtpInfoId      int64  `json:"ftp_info_id" gorm:"ftp_info_id"`           // ftp_info_id
	Date           string `json:"date" gorm:"date"`                         // 日期
	Time           string `json:"time" gorm:"time"`                         // 时间
	LogTime        int64  `json:"log_time" gorm:"log_time"`                 // log_time
	SteamId        string `json:"steam_id" gorm:"steam_id"`                 // 时间
	GameId         int64  `json:"game_id" gorm:"game_id"`                   // 游戏id
	GameName       string `json:"game_name" gorm:"game_name"`               // 游戏名称
	Area           string `json:"area" gorm:"area"`                         // 地堡区域
	Type           string `json:"type" gorm:"type"`                         // 指令类型
	ActiveTime     string `json:"active_time" gorm:"active_time"`           // 地堡下次开放时间
	OpenType       string `json:"open_type" gorm:"open_type"`               // 开门方式
	NextActiveTime string `json:"next_active_time" gorm:"next_active_time"` // 地堡下次开放时间
	Location       string `json:"location" gorm:"location"`                 // 地址
	UpdatedAt      int64  `json:"updated_at" gorm:"updated_at"`             // 修改时间
	CreatedAt      int64  `json:"created_at" gorm:"created_at"`             // 添加时间
}

func (DataBunker) TableName() string {
	return "sm_data_bunker"
}

func (u DataBunker) BeforeUpdate(tx *gorm.DB) (err error) {
	now := time.Now()
	unixTime := now.Unix()
	u.UpdatedAt = unixTime
	u.CreatedAt = unixTime
	return nil
}

type DataBunkerM struct {
	DB *gorm.DB
}

func NewDataBunkerM() *DataBunkerM {
	return &DataBunkerM{
		GetDB(),
	}
}

func (c *DataBunkerM) InsertDataBunker(DataArr []DataBunker) bool {

	result := c.DB.Omit("id").CreateInBatches(DataArr, 1000)

	if result.Error != nil {
		panic(result.Error)
	}
	return true
}
